@@ -23,6 +23,11 @@ |
||
| 23 | 23 |
<script src="scripts/controllers/note-edit-ctrl.js"></script> |
| 24 | 24 |
<script src="scripts/services/file-service.js"></script> |
| 25 | 25 |
<script src="scripts/services/date-formatter.js" charset="utf-8"></script> |
| 26 |
+ |
|
| 27 |
+ <script> |
|
| 28 |
+ var remote = require('remote');
|
|
| 29 |
+ var dialog = remote.require('dialog');
|
|
| 30 |
+ </script> |
|
| 26 | 31 |
</head> |
| 27 | 32 |
|
| 28 | 33 |
<body ng-app="codexApp"> |
@@ -31,7 +36,7 @@ |
||
| 31 | 36 |
<header class="toolbar toolbar-header" ng-controller="HeaderCtrl"> |
| 32 | 37 |
<h1 class="title">Codex</h1> |
| 33 | 38 |
<div class="toolbar-actions"> |
| 34 |
- <button class="btn btn-default"> |
|
| 39 |
+ <button class="btn btn-default" ng-click="createNewNote()"> |
|
| 35 | 40 |
<span class="icon icon-plus"></span> |
| 36 | 41 |
</button> |
| 37 | 42 |
<div class="btn-group pull-right"> |
@@ -37,26 +37,20 @@ angular |
||
| 37 | 37 |
controller: 'AppCtrl' |
| 38 | 38 |
}) |
| 39 | 39 |
.state('note-view', {
|
| 40 |
- url: "/notes", |
|
| 40 |
+ url: "/note-view", |
|
| 41 | 41 |
templateUrl: "views/note-view.html", |
| 42 | 42 |
controller: 'NoteViewCtrl', |
| 43 | 43 |
resolve: {
|
| 44 | 44 |
pageData: function($stateParams) {
|
| 45 |
- console.log('resolve ok')
|
|
| 45 |
+ //console.log('resolve ok')
|
|
| 46 | 46 |
return 'resolve ok'; |
| 47 | 47 |
}, |
| 48 | 48 |
} |
| 49 | 49 |
}) |
| 50 | 50 |
.state('note-edit', {
|
| 51 |
- url: "/notes", |
|
| 51 |
+ url: "/note-edit", |
|
| 52 | 52 |
templateUrl: "views/note-edit.html", |
| 53 |
- controller: 'NoteEditCtrl', |
|
| 54 |
- resolve: {
|
|
| 55 |
- pageData: function($stateParams) {
|
|
| 56 |
- console.log('resolve ok')
|
|
| 57 |
- return 'resolve ok'; |
|
| 58 |
- }, |
|
| 59 |
- } |
|
| 53 |
+ controller: 'NoteEditCtrl' |
|
| 60 | 54 |
}) |
| 61 | 55 |
$urlRouterProvider.otherwise("/");
|
| 62 | 56 |
|
@@ -8,15 +8,32 @@ |
||
| 8 | 8 |
* Controller of the domainManagerApp |
| 9 | 9 |
*/ |
| 10 | 10 |
angular.module('codexApp.header', [])
|
| 11 |
- .controller('HeaderCtrl',['$scope', '$rootScope', '$state', function ($scope, $rootScope, $state) {
|
|
| 11 |
+ .controller('HeaderCtrl',['$scope', '$rootScope', '$state', 'FileService', function ($scope, $rootScope, $state, FileService) {
|
|
| 12 | 12 |
|
| 13 |
- console.log('Header loaded')
|
|
| 13 |
+ console.log('-> Header loaded')
|
|
| 14 | 14 |
|
| 15 | 15 |
$scope.noteViewBtnClass = ""; |
| 16 | 16 |
$scope.noteEditBtnClass = ""; |
| 17 | 17 |
|
| 18 |
+ // Create New Note |
|
| 19 |
+ |
|
| 20 |
+ $scope.createNewNote = function() {
|
|
| 21 |
+ dialog.showSaveDialog({ defaultPath: FileService.getDefaultNotesDir(), filters: [ { name: 'markdown', extensions: ['md'] }] }, function (fileName) {
|
|
| 22 |
+ var fs = require('fs');
|
|
| 23 |
+ if (fileName === undefined) return; |
|
| 24 |
+ fs.writeFile(fileName, "", function (err) {
|
|
| 25 |
+ console.log("-> CREATE NEW NOTE: " + fileName)
|
|
| 26 |
+ var note = FileService.getNote(fileName); |
|
| 27 |
+ FileService.setCurrentNote(note) |
|
| 28 |
+ console.log(note) |
|
| 29 |
+ $scope.activateNoteEdit(); |
|
| 30 |
+ }); |
|
| 31 |
+ }); |
|
| 32 |
+ } |
|
| 33 |
+ |
|
| 34 |
+ // Note View active button |
|
| 35 |
+ |
|
| 18 | 36 |
$scope.activateNoteView = function() {
|
| 19 |
- $rootScope.$broadcast('activate-note-view');
|
|
| 20 | 37 |
$rootScope.$broadcast('window-view:change');
|
| 21 | 38 |
$state.go("note-view");
|
| 22 | 39 |
$scope.noteViewBtnClass = "active"; |
@@ -24,7 +41,6 @@ angular.module('codexApp.header', [])
|
||
| 24 | 41 |
} |
| 25 | 42 |
|
| 26 | 43 |
$scope.activateNoteEdit = function() {
|
| 27 |
- $rootScope.$broadcast('activate-note-edit');
|
|
| 28 | 44 |
$rootScope.$broadcast('window-view:change');
|
| 29 | 45 |
$state.go("note-edit");
|
| 30 | 46 |
$scope.noteViewBtnClass = ""; |
@@ -41,7 +57,6 @@ angular.module('codexApp.header', [])
|
||
| 41 | 57 |
$scope.noteViewBtnClass = ""; |
| 42 | 58 |
$scope.noteEditBtnClass = ""; |
| 43 | 59 |
} |
| 44 |
- //console.log($scope.raw_data); |
|
| 45 | 60 |
}); |
| 46 | 61 |
|
| 47 | 62 |
$rootScope.$on('main-window:note-view', function() {
|
@@ -54,7 +69,6 @@ angular.module('codexApp.header', [])
|
||
| 54 | 69 |
$scope.noteViewBtnClass = "active"; |
| 55 | 70 |
$scope.noteEditBtnClass = ""; |
| 56 | 71 |
} |
| 57 |
- //console.log($scope.raw_data); |
|
| 58 | 72 |
}); |
| 59 | 73 |
|
| 60 | 74 |
}]); |
@@ -10,65 +10,23 @@ |
||
| 10 | 10 |
angular.module('codexApp.noteEdit', [])
|
| 11 | 11 |
.controller('NoteEditCtrl',['$scope', '$rootScope', '$state', 'FileService', function ($scope, $rootScope, $state, FileService) {
|
| 12 | 12 |
|
| 13 |
- var marked = require('marked');
|
|
| 14 |
- var filesystem = require("fs");
|
|
| 15 |
- |
|
| 16 |
- console.log('Note opened!')
|
|
| 13 |
+ console.log('-> Note Editor opened!')
|
|
| 17 | 14 |
|
| 18 | 15 |
$scope.note = FileService.getCurrentNote(); |
| 19 | 16 |
$scope.container = "note-container"; |
| 20 | 17 |
$scope.raw_data = ""; |
| 21 |
- $scope.showNoteView = true; |
|
| 22 |
- $scope.showNoteEdit = false; |
|
| 23 | 18 |
$scope.savedBeforeQuit = false; |
| 24 | 19 |
|
| 25 |
- |
|
| 26 |
- filesystem.readFile($scope.note.path, function(err, data) {
|
|
| 27 |
- var str = String.fromCharCode.apply(null, data) |
|
| 28 |
- if(!$scope.$$phase) {
|
|
| 29 |
- $scope.$apply(function(){
|
|
| 30 |
- $scope.note.data = str; |
|
| 31 |
- $scope.raw_data = str |
|
| 32 |
- }); |
|
| 33 |
- } else {
|
|
| 34 |
- $scope.note.data = str; |
|
| 35 |
- $scope.raw_data = str; |
|
| 36 |
- } |
|
| 37 |
- //console.log($scope.raw_data); |
|
| 38 |
- var a = document.getElementsByTagName('a'), ajax;
|
|
| 39 |
- for (var i=0; i<a.length; ++i) {
|
|
| 40 |
- a[i].addEventListener('click', handleAnchor, false);
|
|
| 41 |
- } |
|
| 42 |
- function handleAnchor(e){
|
|
| 43 |
- e.preventDefault(); |
|
| 44 |
- if(ajax) ajax.abort(); |
|
| 45 |
- ajax = new XMLHttpRequest(); |
|
| 46 |
- ajax.onload = updateContent; |
|
| 47 |
- ajax.open("get", this.href, true);
|
|
| 48 |
- ajax.send(); |
|
| 49 |
- console.log("-> Prevented link from opening: " + e.srcElement.href);
|
|
| 50 |
- } |
|
| 51 |
- function updateContent() {
|
|
| 52 |
- // Do something with `this.responseText` |
|
| 53 |
- } |
|
| 54 |
- }); |
|
| 55 |
- |
|
| 56 |
- $scope.marked = function(str) {
|
|
| 57 |
- return marked(str); |
|
| 58 |
- } |
|
| 59 |
- |
|
| 60 | 20 |
$rootScope.$on('window-view:change', function() {
|
| 61 | 21 |
if($scope.savedBeforeQuit == false) {
|
| 62 | 22 |
$scope.savedBeforeQuit = true; |
| 63 | 23 |
FileService.saveFile($scope.note.path, $scope.raw_data) |
| 64 | 24 |
} |
| 65 |
- |
|
| 66 | 25 |
}); |
| 67 | 26 |
|
| 68 |
- |
|
| 69 | 27 |
$scope.aceLoaded = function(_editor) {
|
| 70 | 28 |
_editor.setReadOnly(false); |
| 71 |
- console.log($scope.raw_data); |
|
| 29 |
+ //console.log($scope.raw_data); |
|
| 72 | 30 |
}; |
| 73 | 31 |
|
| 74 | 32 |
$scope.aceChanged = function(e) {
|
@@ -13,7 +13,7 @@ angular.module('codexApp.noteView', [])
|
||
| 13 | 13 |
var marked = require('marked');
|
| 14 | 14 |
var filesystem = require("fs");
|
| 15 | 15 |
|
| 16 |
- console.log('Note opened!')
|
|
| 16 |
+ console.log('-> Note View opened!')
|
|
| 17 | 17 |
|
| 18 | 18 |
$scope.note = FileService.getCurrentNote(); |
| 19 | 19 |
$scope.container = "note-container"; |
@@ -51,32 +51,14 @@ angular.module('codexApp.noteView', [])
|
||
| 51 | 51 |
}); |
| 52 | 52 |
|
| 53 | 53 |
$scope.marked = function(str) {
|
| 54 |
- return marked(str); |
|
| 55 |
- } |
|
| 56 |
- |
|
| 57 |
- $rootScope.$on('activate-note-view', function() {
|
|
| 58 |
- if(!$scope.$$phase) {
|
|
| 59 |
- $scope.$apply(function(){
|
|
| 60 |
- $scope.showNoteView = true; |
|
| 61 |
- $scope.showNoteEdit = false; |
|
| 62 |
- }); |
|
| 54 |
+ if(str != "" && str != undefined) {
|
|
| 55 |
+ return marked(str); |
|
| 63 | 56 |
} else {
|
| 64 |
- $scope.showNoteView = true; |
|
| 65 |
- $scope.showNoteEdit = false; |
|
| 57 |
+ return str; |
|
| 66 | 58 |
} |
| 67 |
- }); |
|
| 68 | 59 |
|
| 69 |
- $rootScope.$on('activate-note-edit', function() {
|
|
| 70 |
- if(!$scope.$$phase) {
|
|
| 71 |
- $scope.$apply(function(){
|
|
| 72 |
- $scope.showNoteView = false; |
|
| 73 |
- $scope.showNoteEdit = true; |
|
| 74 |
- }); |
|
| 75 |
- } else {
|
|
| 76 |
- $scope.showNoteView = false; |
|
| 77 |
- $scope.showNoteEdit = true; |
|
| 78 |
- } |
|
| 79 |
- //console.log($scope.raw_data); |
|
| 80 |
- }); |
|
| 60 |
+ } |
|
| 61 |
+ |
|
| 62 |
+ |
|
| 81 | 63 |
|
| 82 | 64 |
}]); |
@@ -10,7 +10,7 @@ |
||
| 10 | 10 |
angular.module('codexApp.sidebar', [])
|
| 11 | 11 |
.controller('SidebarCtrl',['$scope', '$rootScope', '$state', function ($scope, $rootScope, $state) {
|
| 12 | 12 |
|
| 13 |
- console.log('Sidebar loaded')
|
|
| 13 |
+ console.log('-> Sidebar loaded')
|
|
| 14 | 14 |
|
| 15 | 15 |
$scope.goToAllNotes = function() {
|
| 16 | 16 |
$rootScope.$broadcast('main-window:note-list');
|
@@ -2,6 +2,7 @@ angular.module('codexApp')
|
||
| 2 | 2 |
.service('FileService', [ '$rootScope', '$http', function($rootScope, $http) {
|
| 3 | 3 |
|
| 4 | 4 |
var notes_dir = "/Users/james/dev/codex/codex"; |
| 5 |
+ var default_notes_dir = "/Users/james/dev/codex/codex/inbox"; |
|
| 5 | 6 |
var notes = []; |
| 6 | 7 |
var current_note = ""; |
| 7 | 8 |
|
@@ -49,7 +50,7 @@ angular.module('codexApp')
|
||
| 49 | 50 |
} else {
|
| 50 | 51 |
if(file != ".DS_Store") {
|
| 51 | 52 |
size = size + stat["size"]; |
| 52 |
- console.log("* " + stat["size"] + " KB -> " + file_path)
|
|
| 53 |
+ //console.log("* " + stat["size"] + " KB -> " + file_path)
|
|
| 53 | 54 |
} |
| 54 | 55 |
} |
| 55 | 56 |
}); |
@@ -170,6 +171,24 @@ angular.module('codexApp')
|
||
| 170 | 171 |
}); |
| 171 | 172 |
} |
| 172 | 173 |
|
| 174 |
+ this.getNote = function(file_path){
|
|
| 175 |
+ var filesystem = require("fs");
|
|
| 176 |
+ var stat = filesystem.statSync(file_path); |
|
| 177 |
+ var file_obj = {
|
|
| 178 |
+ title: "", |
|
| 179 |
+ path: file_path, |
|
| 180 |
+ size: stat['size'], |
|
| 181 |
+ type: getFileType(file_path), |
|
| 182 |
+ author: "", |
|
| 183 |
+ index: "", |
|
| 184 |
+ id: "", |
|
| 185 |
+ created_at: dateFormat(stat["birthdate"], "mediumDate"), |
|
| 186 |
+ modified_at: dateFormat(stat["mtime"], "mediumDate"), |
|
| 187 |
+ accessed_at: dateFormat(stat["atime"], "mediumDate") |
|
| 188 |
+ } |
|
| 189 |
+ return file_obj |
|
| 190 |
+ } |
|
| 191 |
+ |
|
| 173 | 192 |
|
| 174 | 193 |
// RESPONSE |
| 175 | 194 |
this.getNotes = function() {
|
@@ -185,7 +204,11 @@ angular.module('codexApp')
|
||
| 185 | 204 |
//console.log("searcing for: " + note_id)
|
| 186 | 205 |
current_note = note; |
| 187 | 206 |
//console.log(current_note); |
| 188 |
- console.log("Current_note: " + current_note.title)
|
|
| 207 |
+ //console.log("Current_note: " + current_note.title)
|
|
| 208 |
+ } |
|
| 209 |
+ |
|
| 210 |
+ this.getDefaultNotesDir = function() {
|
|
| 211 |
+ return default_notes_dir; |
|
| 189 | 212 |
} |
| 190 | 213 |
|
| 191 | 214 |
}]) |